package middleExam;

import javax.swing.*;
import java.awt.*;

/**
 * @author WuYongheng
 * @date 2022/11/10
 * @description
 */
public class love extends JFrame {
    private static final int WIDTH = 500;
    private static final int HEIGHT = 500;

    private static int WINDOW_WIDTH = Toolkit.getDefaultToolkit().getScreenSize().width;
    private static int WINDOW_HEIGHT = Toolkit.getDefaultToolkit().getScreenSize().height;

    public love() {
        super("I love you");//设置窗口标题
        this.setBackground(Color.BLACK);
        this.setLocation((WINDOW_WIDTH - WIDTH) / 2, (WINDOW_HEIGHT - HEIGHT) / 2);//设置窗口位置
        this.setSize(WIDTH, HEIGHT);//设置窗口大小
        this.setLayout(getLayout());//设置窗口布局
        this.setVisible(true);//设置窗口可见
        this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);//设置窗口默认关闭方式
    }

    public void paint(Graphics g) {
        double x, y; //横纵坐标
        double rx, ry;
        Image image = this.createImage(WIDTH, HEIGHT);
        Graphics pic = image.getGraphics();
        for (int t = 0; t < 90; t++) {
            x = 16 * Math.pow(Math.sin(Math.PI / 45 * t), 3);
            // 先放大，再移动到画布中央
            x = x * 11;
            x = x + WIDTH / 2;
            y = -(13 * Math.cos(Math.PI / 45 * t) - 5 * Math.cos(Math.PI / 45 * 2 * t)
                    - 2 * Math.cos(Math.PI / 45 * 3 * t) - Math.cos(Math.PI / 45 * 4 * t));
            y = y * 11;
            y = y + HEIGHT / 2;
            /**
             * 使用随机数达到散射粒子效果
             */
            for (int i = 0; i < 10; i++) {
                double r = Math.random();
                rx = (0.15) * Math.log(r);
                ry = (0.15) * Math.log(r);
                double dx = rx * (x - WIDTH / 2);
                double dy = ry * (y - HEIGHT / 2);
                pic.setColor(Color.pink);
                pic.fillOval((int) (x - dx), (int) (y - dy), 2, 2);
            }
            pic.setColor(Color.red);
            pic.fillOval((int) x, (int) y, 2, 2);
        }
        g.drawImage(image, 0, 0, this);//生成图片
    }
    public static void main(String[] args) {
        new love();
    }
}
